package com.aaa.check.service.impl;

import com.aaa.check.dao.CheckListDao;
import com.aaa.check.service.CheckListService;
import com.aaa.check.vo.CheckListVo;
import com.aaa.entity.CheckResult;
import com.aaa.entity.User;
import com.aaa.vo.Result;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.util.function.Consumer;


@Service
public class CheckListServiceImpl implements CheckListService {

    @Autowired
    private CheckListDao checkListDao;
    @Override
    public Result<IPage<CheckResult>> findByCondition(Integer currentPage, Integer pageSize, CheckListVo checkListVo) {

        IPage<CheckResult> page = new Page<>(currentPage,pageSize);
        QueryWrapper<CheckResult> wrappers = new QueryWrapper<>();
        String [] checkItem =checkListVo.getCheckItem();

        if (StringUtils.hasText(checkListVo.getRegId())){
            wrappers.like("reg_id",checkListVo.getRegId());
        }
        if (StringUtils.hasText(checkListVo.getPatientName())){
            wrappers.like("patient_name",checkListVo.getPatientName());
        }
        if (checkItem.length==5){
            wrappers.and(new Consumer<QueryWrapper<CheckResult>>() {
                             @Override
                             public void accept(QueryWrapper<CheckResult> wrapper) {
                                 wrapper.eq("check_item_id", checkItem[0]).or().eq("check_item_id", checkItem[1]).or().
                                         eq("check_item_id", checkItem[2]).or().eq("check_item_id", checkItem[3]).or().
                                         eq("check_item_id", checkItem[4]);
                             }
                         }
            );
        }
        else if (checkItem.length==4){
            wrappers.and(new Consumer<QueryWrapper<CheckResult>>() {
                             @Override
                             public void accept(QueryWrapper<CheckResult> wrapper) {
                                 wrapper.eq("check_item_id", checkItem[0]).or().eq("check_item_id", checkItem[1]).or().
                                         eq("check_item_id", checkItem[2]).or().eq("check_item_id", checkItem[3]);
                             }
                         }
            );
        }else if (checkItem.length==3){
            wrappers.and(new Consumer<QueryWrapper<CheckResult>>() {
                             @Override
                             public void accept(QueryWrapper<CheckResult> wrapper) {
                                 wrapper.eq("check_item_id", checkItem[0]).or().eq("check_item_id", checkItem[1]).or().
                                         eq("check_item_id", checkItem[2]);
                             }
                         }
            );
        }else if (checkItem.length==2){
            wrappers.and(new Consumer<QueryWrapper<CheckResult>>() {
                             @Override
                             public void accept(QueryWrapper<CheckResult> wrapper) {
                                 wrapper.eq("check_item_id", checkItem[0]).or().eq("check_item_id", checkItem[1]);
                             }
                         }
            );
        }else if (checkItem.length==1){
            wrappers.eq("check_item_id",checkItem[0]);
        }

        IPage<CheckResult> page1 = checkListDao.selectPage(page, wrappers);
        return new Result<IPage<CheckResult>>(200,"查询用户成功",page1);
    }
}
